package com.ruoyi.produce.base.bom.mapper;

import com.ruoyi.machine.base.device.domain.Device;
import com.ruoyi.produce.base.bom.domain.Bom;
import com.ruoyi.produce.base.bom.domain.ProductionMachine;
import com.ruoyi.produce.base.mould.domain.Mould;
import com.ruoyi.produce.base.procedure.domain.Procedure;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Bom
 * 数据层
 * @author Drj 2021/6/28
 */
public interface BomMapper {
    /**
     * 查找Bom
     * @param produceId 产品编号
     * @return
     */
    public Bom selectBom(String produceId);

    /**
     * 查找子件Bom
     * @param produceId 父件产品编号
     * @return
     */
    public List<Bom> selectBomChildList(String produceId);

    /**
     * 查找父件指定子件
     * @param produceId 子件产品编号
     * @param produceParentId 父件产品编号
     * @return
     */
    public Bom selectBomChildById(@Param("produceId")String produceId,@Param("produceParentId")String produceParentId);

    /**
     * 新增Bom
     * @param bom
     * @return
     */
    public int insertBom(Bom bom);

    /**
     * 新增子件Bom信息
     * @param bomChild bom子件
     * @param bomParent bom父件
     * @return
     */
    public int insertBomChild(@Param("child") Bom bomChild,@Param("parent") Bom bomParent);

    /**
     * 更新Bom
     * @param bom
     * @return
     */
    public int updateBom(Bom bom);

    /**
     * 删除Bom
     * 仅修改删除标志
     * @param bom
     * @return
     */
    public int updateBomDeleteFlag(Bom bom);

    /**
     * 更新指定父件对应子件
     * @param bomChild bom子件
     * @param bomParent bom父件
     * @return
     */
    public int updateBomChild(@Param("child")Bom bomChild,@Param("parent")Bom bomParent);

    /**
     * 删除父件对应的指定子件
     * @param produceId
     * @param produceParentId
     * @return
     */
    public int deleteBomChild(@Param("produceId")String produceId,@Param("produceParentId")String produceParentId);

    /**
     * 查询产品结构对应的工序
     * @param produceId
     * @return
     */
    public List<Procedure> selectProcedureList(String produceId);

    /**
     * 新增产品对应工序
     * @param produceId 产品编号
     * @param procedureId 工序编号
     * @return
     */
    public int insertBomProcedure(@Param("produceId")String produceId,@Param("procedureId")String procedureId);

    /**
     * 删除对应产品工序
     * @param produceId 产品编号
     * @return
     */
    public int deleteBomProcedure(String produceId);

    /**
     * 查询产品结构对应的设备
     * @param produceId
     * @return
     */
    public List<ProductionMachine> selectMachineList(String produceId);

    /**
     * 新增产品对应设备
     * @param produceId 产品编号
     * @param machineId 设备编号
     * @return
     */
    public int insertBomMachine(@Param("produceId")String produceId,@Param("machineId")String machineId, @Param("capacity")double capacity);

    /**
     * 删除对应产品设备
     * @param produceId 产品编号
     * @return
     */
    public int deleteBomMachine(String produceId);

    /**
     * 查询产品结构对应的模具
     * @param produceId
     * @return
     */
    public List<Mould> selectMouldList(String produceId);

    /**
     * 新增产品对应模具
     * @param produceId 产品编号
     * @param mouldId 工序编号
     * @return
     */
    public int insertBomMould(@Param("produceId")String produceId,@Param("mouldId")String mouldId);

    /**
     * 删除对应产品模具
     * @param produceId 产品编号
     * @return
     */
    public int deleteBomMould(String produceId);
}
